﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;
using CancioneroCONFAD.DAL;
using SubSonic.Repository;

namespace CancioneroCONFAD.Formularios
{
    public partial class GuardarListaEnBase : Form
    {
        SimpleRepository _repository = new SimpleRepository("Cancionero", SimpleRepositoryOptions.None);
        private readonly List<Cancion> CancionesGuardar = new List<Cancion>();
        public bool ListaGuardada = false;
        public GuardarListaEnBase(List<Cancion> canciones)
        {
            CancionesGuardar = canciones;
            InitializeComponent();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                //var items = ckLstCanciones.Items;
                var descripcion = "Lista de canciones generada el " + DateTime.Now.ToShortDateString();
                var nombre = "Canciones " + DateTime.Now.ToShortDateString();
                if(!string.IsNullOrEmpty(txtNombre.Text))
                {
                    nombre = txtNombre.Text;
                }
                
                if(!string.IsNullOrEmpty(txtDescripcion.Text))
                {
                    descripcion = txtDescripcion.Text;
                }
                var lista = new Lista
                {
                    Descripcion = descripcion,
                    Nombre = nombre,
                    FechaCreacion = DateTime.Now
                };
                _repository.Add(lista);
                foreach (var item in CancionesGuardar)
                {
                    var cancionLista = new CancionEnLista()
                    {
                        IdCancion = item.Id,
                        IdLista = lista.Id
                    };
                    _repository.Add(cancionLista);

                }
                
                MessageBox.Show("La lista " + lista.Nombre + " ha sido guardada exitosamente.", "Operación correcta",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
                ListaGuardada = true;
                Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ha ocurrido un error:\n" + ex.Message, "Oops lo sentimos", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
        }

        private void GuardarListaEnBase_Load(object sender, EventArgs e)
        {
            try
            {
                foreach (var cancion in CancionesGuardar)
                {
                    lstCanciones.Items.Add(cancion.Titulo);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ha ocurrido un error:\n" + ex.Message, "Oops lo sentimos", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            Close();
        }


    }
}
